package bot.controller;

import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * Java 爬取网页上的图片
 *
 * 第一步：获取页面的源代码；
 * 第二步：解析源代码，含有图片的标签，再找到图片标签里面的src；
 * 第三步：利用Java里面的net包，网络编程
 *
 * @author SJH
 */
@RestController
@RequestMapping("/getUrl")
public class HtmlJsoup extends Thread{
    /**
     * 根据网页和编码获取网页内容和源代码
     */
    @GetMapping("/picurl")
    public static String getHtmlResourceByUrl(String id){
        String url = "https://y.music.163.com/m/song?id=" + id;
        StringBuffer buffer   = new StringBuffer();
        URL urlObj            = null;
        URLConnection uc      = null;
        InputStreamReader in  = null;
        BufferedReader reader = null;
        try {
            // 建立网络连接
            urlObj = new URL(url);
            // 打开网络连接
            uc     = urlObj.openConnection();
            // 创建输入流
            in     = new InputStreamReader(uc.getInputStream(),"UTF-8");
            // 创建一个缓冲写入流
            reader = new BufferedReader(in);

            String line = null;
            while ((line = reader.readLine()) != null) {
                if(line.contains("og:image")){
                    // 一行一行追加
                    //int indexF = line.lastIndexOf("\"" , - 1);//引号需要转义
                    int indexL = line.lastIndexOf("\"");//引号需要转义
                    int indexF = StringUtils.lastOrdinalIndexOf(line, "\"", 2);
                    line = line.substring(indexF + 1, indexL);
                    buffer.append(line);
                }
               continue;
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return buffer.toString();
    }

    /**
     * 根据图片的URL下载的图片到本地的filePath
     * @param filePath 文件夹
     * @param imageUrl 图片的网址
     */
    public static void downImages(String filePath,String imageUrl){
        // 截取图片的名称
        String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));

        //创建文件的目录结构
        File files = new File(filePath);
        if(!files.exists()){// 判断文件夹是否存在，如果不存在就创建一个文件夹
            files.mkdirs();
        }
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream is = connection.getInputStream();
            // 创建文件，并设置默认文件名
            File file = new File(filePath+fileName);
            FileOutputStream out = new FileOutputStream(file);
            int i = 0;
            while((i = is.read()) != -1){
                out.write(i);
            }
            is.close();
            out.close();


        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

